<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      .bdr-img {
        /* color: #fff; */
        text-align: center;
        padding: 5rem;
        margin: 2rem auto;
        width: 70%;
        border: 50px solid #fff;
        /* border-image:url('./img/border-img.jpg') 50 round; */
        border-image-source: url("./img/border-img.jpg");
        border-image-slice: 50;
        border-image-repeat: round;
      }
    </style>
  </head>
  <body>
    <div class="bdr-img">
      以下是一些可能的Promise面试问题及答案： 问题：什么是Promise？
      答案：Promise
      是一个代表异步操作最终完成或失败的对象。它有三种状态：pending（进行中）、fulfilled（已成功）和
      rejected（已失败）。 问题：如何使用Promise？
      答案：创建一个Promise通常使用new
      Promise构造函数，它接受一个函数作为参数，该函数接收两个参数：resolve和reject。当异步操作成功时，调用resolve；当异步操作失败时，调用reject。
      问题：Promise有哪些状态？它们是如何转换的？
      答案：Promise有三种状态：pending（进行中）、fulfilled（已成功）和
      rejected（已失败）。它们之间的转换是单向的，只能从pending状态转换为fulfilled或rejected状态，不能从fulfilled或rejected状态转换回pending状态。
      问题：then()和catch()方法的作用和区别是什么？
      答案：then()方法用于处理异步操作成功的情况，它接受两个参数：第一个参数是成功的回调函数，第二个参数是失败的回调函数。catch()方法用于处理异步操作失败的情况，它只接受一个参数，即失败的回调函数。then()和catch()的区别在于，如果异步操作已经成功，那么catch()方法不会被调用；如果异步操作已经失败，那么then()方法不会被调用。
      问题：如果一个Promise被拒绝，如何处理这个错误？
      答案：可以使用catch()方法来处理Promise被拒绝的情况。当Promise被拒绝时，catch()方法会被调用，并且传入拒绝的原因作为参数。
      问题：Promise.all()和Promise.race()有什么区别？
      答案：Promise.all()方法接受一个Promise对象的数组作为参数，当所有Promise都成功时返回一个新的Promise对象，该Promise对象的状态为fulfilled；当任何一个Promise失败时返回一个新的Promise对象，该Promise对象的状态为rejected。而Promise.race()方法接受一个Promise对象的数组作为参数，当数组中的任何一个Promise的状态发生变化时，返回一个新的Promise对象，该Promise对象的状态与第一个发生变化的Promise的状态相同。
    </div>
  </body>
</html>
